package net.janeluo.rs.module;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import net.janeluo.rs.bean.JsonReturnMessage;
import net.janeluo.rs.entity.RS_User;
import net.janeluo.rs.service.UserManagerService;

import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;

/**
 * 用户管理模块
 * 
 * @author DLK)JaneLuo
 * @version 1.0.0
 */
@IocBean
@At("/")
public class UserManagerModule {
    private static final Log log = Logs.getLog(UserManagerModule.class);
    
    @Inject
    private UserManagerService userManagerService;
    
    /**
     * 初始化显示用户管理首页
     */
    @At("UserManager")
    @Ok("jsp:views.UserManager")
    public List<RS_User> initUserManager(HttpServletRequest req){
        log.debug("--------------- 查询用户列表开始 ----------------");
        
        List<RS_User> userList = userManagerService.getUserList(null, null);
        req.getSession().setAttribute("menuName", "UserManager");
        log.debug("--------------- 查询用户列表结束 ----------------");
        return userList;
    }
    
    /**
     * 新增用户
     */
    @At("AddUser")
    @Ok("->:/UserManager.nut")
    public void addUser(@Param("..") RS_User user){
        log.debug("---------------新增用户开始 ----------------");
        
        userManagerService.insertUser(user);
        
        log.debug("--------------- 新增用户结束 ----------------");
    }
    
    /**
     * 用户更新初始化
     * 
     * @param userid 用户id
     * @return JSON消息实体 
     */
    @At("InitUserUpdate")
    @Ok("json")
    public JsonReturnMessage initUserUpdate(@Param("userid") String userid){
        log.debug("--------------- 更新用户初始化开始 ---------------");
        JsonReturnMessage mess = new JsonReturnMessage();
        RS_User user = userManagerService.findUserById(userid);
        if (user != null) {
            mess.setSuccess("0");
            mess.setMessage(user);
        } else {
            mess.setSuccess("1");
        }
        
        log.debug("--------------- 更新用户初始化结束 ---------------");
        return mess;
    }
    
    /**
     * 更新用户
     */
    @At("UpdateUser")
    @Ok("->:/UserManager.nut")
    public void updateUser(@Param("..") RS_User user){
        log.debug("---------------新增用户开始 ----------------");
        
        userManagerService.updateUser(user);
        
        log.debug("--------------- 新增用户结束 ----------------");
    }

    /**
     * 删除用户
     */
    @At("DeleteUser")
    @Ok("->:/UserManager.nut")
    public void deleteUser(@Param("userids") String[] userids) {
        log.debug("--------------- 删除用户开始 ----------------");
        
        userManagerService.deleteUser(userids);
        
        log.debug("--------------- 删除用户结束 ----------------");
    }
    
    /**
     * 用户充值
     */
    @At("UserRecharge")
    @Ok("->:/UserManager.nut")
    public void userRecharge(@Param("userid") String userid, @Param("rechargeAmount") String rechargeAmount) {
        log.debug("--------------- 删除用户开始 ----------------");
        
        userManagerService.saveUserRecharge(userid, rechargeAmount);
        
        log.debug("--------------- 删除用户结束 ----------------");
    }
    
    /**
     * 校验用户是否存在
     * 
     * @param userid
     * @return 0：用户已存在 1：用户不存在
     */
    @At("checkUserExists")
    @Ok("json")
    public JsonReturnMessage checkUserExists(@Param("userid") String userid){
        log.debug("--------------- 校验新增用户是否存在开始 ----------------");
        
        JsonReturnMessage mess = new JsonReturnMessage();
        RS_User rs_User = userManagerService.findUserById(userid);
        mess.setSuccess("0");
        if (null != rs_User) {
            mess.setMessage("0");
        } else {
            mess.setMessage("1");
        }
        
        log.debug("--------------- 校验新增用户是否存在结束 ----------------");
        return mess;
        
    }
}
